<!--
 * @Author: BlueSkyDream
 * @Date: 2023-05-04 14:47:51
 * @LastEditTime: 2023-05-04 15:09:37
 * @Description: 函数闭包相关内容实践
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /* 
      闭包: 
        - 通俗定义
          闭包就是能够访问到外部函数作用域中变量的函数
        - 用处
          用来隐藏一些不希望被外部访问到的变量
        - 满足条件
          1. 函数必须有嵌套
          2. 内部函数要引用外部函数中的变量
          3. 内部函数要作为返回值返回
        - 生命周期
          1. 闭包在外部函数调用时产生,外部函数每次调用都会返回一个新的闭包
          2. 闭包在内部函数丢失时销毁(内部函数被垃圾回收了,闭包才会消失)
          
    */
    
    function outer() {
      let num = 0 
      return () => {
        num ++
        console.log(num);
      }
    }
    const newFn = outer()
    newFn()
    newFn()
    
  </script>
</body>
</html>